import { createSSRApp } from 'vue'
import * as Pinia from 'pinia'
import App from './App.vue'
import { createUnistorage } from 'pinia-plugin-unistorage'
import uniapi from './utils/common/uniapi'
import { loginPage, imgUrl, mainColor } from './config'
import 'sard-uniapp/global.d.ts'

import uviewPlus from 'uview-plus'
// import uviewPlus from 'uview-plus'
// import 'uview-plus/index.scss'
import 'uview-plus/index.scss'

// H5环境调试配置
// #ifdef H5
// 开发环境检测（简化版本）

if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {
  console.log('H5开发环境')
  // 添加全局错误监听
  window.addEventListener('error', (e) => {
    console.error('H5错误:', e.error)
  })
  
  // 添加未处理的Promise拒绝监听
  window.addEventListener('unhandledrejection', (e) => {
    console.error('H5未处理的Promise拒绝:', e.reason)
  })
  
  // 输出环境信息
  console.log('H5环境信息:', {
    userAgent: navigator.userAgent,
    viewport: {
      width: window.innerWidth,
      height: window.innerHeight
    },
    devicePixelRatio: window.devicePixelRatio,
    platform: navigator.platform
  })
} else {
  console.log('H5生产环境')
  // 生产环境可以添加一些调试信息
  window.addEventListener('error', (e) => {
    console.error('H5错误:', e.error)
  })
}
// #endif

// uview-plus 已启用，供全局组件使用

// #ifdef MP-WEIXIN
import mpShareMixin from './mixin/mp-share-mixin'
// #endif

export function createApp() {
	const app = createSSRApp(App)

	// 全局属性
	app.config.globalProperties.$loginPage = loginPage
	app.config.globalProperties.$imgUrl = imgUrl
	app.config.globalProperties.$mainColor = mainColor

	// pinia 的本地数据缓存插件
	const pinia = Pinia.createPinia()
	pinia.use(createUnistorage())
	app.use(pinia)

	// uni工具类函数
	app.use(uniapi)

    // 全局注册 uview-plus
    app.use(uviewPlus)

	// #ifdef MP-WEIXIN
	// 小程序分享的mixin封装
	app.mixin(mpShareMixin)
	// #endif

	return {
		app,
		Pinia
	}
}

